import axios from 'axios'

/**
 * 对应后端接口: GET /api/dimensions/texture-categories
 * 获取所有纹理分类 (TXTCategory)
 */
export const getAllTextureCategories = () => {
  // axios.get 会返回一个 Promise，Promise resolved后包含 { data, status, ... }
  return axios.get('/api/dimensions/texture-categories')
}

/**
 * 对应后端接口: GET /api/templates/texture?categoryId={id}
 * 获取某一分类下的具体纹理模板 (TextureTemplate)
 * @param {number} categoryId - 纹理分类 ID
 */
export const getTexturesByCategory = (categoryId) => {
  return axios.get('/api/templates/texture', {
    params: {
      categoryId: categoryId,
    },
  })
}

/**
 * 对应后端后端接口: GET /api/templates/texture/{id}
 * 获取单个纹理模板详情 (如果需要)
 */
export const getTextureDetails = (id) => {
  return axios.get(`/api/templates/texture/${id}`)
}
/**
 * 对应后端后端接口: GET /api/templates/{id}
 * 获取单个设计模板详情 (Template)
 */
export const getTemplateDetails = (id) => {
  // 请确保这里的路径是正确的后端模板详情接口
  return axios.get(`/api/templates/papercut/${id}`)
}

/**
 * 对应后端接口: POST /api/creations
 * 2.4: 保存用户创作结果
 * @param {object} creationData - 包含 userId, templateId, textureId, customData 等
 */
export const saveUserCreation = (creationData) => {
  return axios.post('/api/creations', creationData)
}

/**
 * ✅ 新增：文件上传接口
 * 对应后端接口: POST /api/files/upload
 * @param {Blob} imageBlob - 图片文件的 Blob 对象
 * @param {string} fileName - 文件名 (如 'creation-1001-12345.png')
 * @returns {Promise<{url: string}>} - 返回包含图片 URL 的 Promise
 */
export const uploadImageApi = (imageBlob, fileName) => {
  const formData = new FormData()
  // 后端接收参数名为 'file'
  formData.append('file', imageBlob, fileName)

  return axios.post('/api/files/upload', formData, {
    headers: {
      // Content-Type: multipart/form-data
      // 这里的设置可以省略，让浏览器/axios自动处理
    },
  })
}
